GtkFileChooserNativeQuartz: improve support for file filters
authorTom Schoonjans <Tom.Schoonjans@diamond.ac.uk>
Mon, 31 Jul 2017 20:26:47 +0000 (21:26 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 23 Aug 2017 14:45:30 +0000 (10:45 -0400)
Instead of using conditional compilation, use respondsToSelector to
check at runtime for setAccessoryViewDisclosed.

https://bugzilla.gnome.org/show_bug.cgi?id=785306

gtk/gtkfilechoosernativequartz.c

index d5732482104c9500c88f33a1846ad5eb462895e4..f210c1db94e919da17739818df4567cdfe6af4c3 100644 (file)
@@ -208,6 +208,10 @@ filechooser_quartz_data_free (FileChooserQuartzData *data)
   g_free (data);
 }
 
+@protocol CanSetAccessoryViewDisclosed
+- (void)setAccessoryViewDisclosed:(BOOL)val;
+@end
+
 static gboolean
 filechooser_quartz_launch (FileChooserQuartzData *data)
 {
@@ -325,14 +329,11 @@ filechooser_quartz_launch (FileChooserQuartzData *data)
         }
       [data->filter_combo_box setToolTip:[NSString stringWithUTF8String:_("Select which types of files are shown")]];
       [data->panel setAccessoryView:data->filter_combo_box];
-#ifdef AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
-      if (!data->save)
+      if ([data->panel isKindOfClass:[NSOpenPanel class]] && [data->panel respondsToSelector:@selector(setAccessoryViewDisclosed:)])
         {
-          [(NSOpenPanel *) data->panel setAccessoryViewDisclosed:YES];
+          [(id<CanSetAccessoryViewDisclosed>) data->panel setAccessoryViewDisclosed:YES];
         }
-#endif
     }
-
   data->response = GTK_RESPONSE_CANCEL;